import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
import axios from 'axios'
export default new Vuex.Store({
  state: {
    // 大数据
    tabs: [],
    // 详情页对象数据
    // item: {}
    // 购物车
    car: [],
    // 收货地址
    address: [{
      name: '张三',
      tel: '110',
      address: '上海市政府',
      id: '1',
    }, {
      name: '李四',
      tel: '120',
      address: '上海市政府',
      id: "2"
    }]
  },
  getters: {
    // 计算数量
    totalCount(state) {
      let count = 0;
      state.car.forEach(item => {
        // if(item.checked) {
          count += item.count
        // }
      })
      return count || ''
    },
    // 计算总价
    totalPrice(state) {
      let price = 0;
      state.car.forEach(item => {
        // 选中的才计算
        if(item.checked) {
          price += item.price * item.count
        }
      })
      return price
    }
  },
  mutations: {
    // 获取大数据
    Fetch_Tabs(state, payload) {
      state.tabs =payload
    },
    // Fetch_Item(state, id) {
    //   state.tabs.forEach(item => {
    //     const o = item.children.find(v => v.id === id)
    //     if (o) {
    //       state.item = o
    //     }
    //   })
    // },
    // 加入购物车
    Add_Car(state, payload) {
      const o = state.car.find(item => item.id === payload.id)

      // 去重复
      if(o) {
        o.count++
      } else {
        state.car.push({
          ...payload,
          // 刚加入购物车 数量1
          count: 1,
          // 默认新添加的商品  不被选中
          checked: false
        })
      }
    },
    // 删除购物车
    Delete_Car(state,id) {
      state.car = state.car.filter(item => item.id !== id)
    },
    Add_Address(state, payload) {
      state.address.push(payload)
    },
    Edit_Address(state, payload) {
      const o = state.address.find(item => item.id === payload.id) 

      Object.assign(o, payload)
    }
  },
  actions: {
    // 获取大数据
    Fetch_Tabs(context) {
      axios.get('/api/tabs').then(resp => {
        context.commit('Fetch_Tabs', resp.data.data)
      })
    }
  },
  modules: {
  }
})
